package com.kgis.fm.business.management.service;

import com.kgis.fm.business.model.Entity;



/**
 * 维护设施的统一入口
 * @author zhxiaomiao
 * 
 */
public interface FmEntityManagementService<T extends Entity>{
	/**
	 * 插入非空间表
	 * @param tableName 非空间表
	 * @param values
	 * @return
	 */
//	long saveAttributs(String tableName,Map<String, Object>values);
	
//	boolean saveGeometryAndAttributs();
	
	long sequence(String sequenceName);
	
 
//	T findById(long entityTypeId, long entityId);
//
//    T findByIdWithGeomotry(long entityTypeId, long entityId, long detailId);
//
//    List<Entity> findByIds(long entityTypeId, long[] ids);
//
    T create(T entity);
    
    T createGeometryEntity(T entity);

//
    T update(T entity);
//
//    int updateList(List<T> entitys);
//
//    T remove(T entity);
//
//    T removeSpatialOnly(T entity);

//    T createWithRelations(T model, List<Entity> relationEntitys);
//
//    T updateWithRelations(T model, List<Entity> relationEntitys);
//
//    T saveWithRelations(T model, List<Entity> relationEntitys);
//
//    T save(T entity);
//
//    /**
//     * 通过多对多关系关联两个实体
//     *
//     * @param supplier
//     * @param client
//     * @return
//     */
//    int associateByManyToManyRelation(Entity supplier, Entity client);
//
//    /**
//     * 获取多对多的关系Map
//     */
////    Map<AttributeTemplate, String> createManyToManyAttributeTemplateMap(long entityTypeId, Map<String, String> code2ValueMap);
//
//    /**
//     * 保存多对多的关系
//     */
//    T saveManyToManyAssociation(T entity, Map<String, String> code2ValueMap);
//
//    /**
//     * 删除一种类型的实体
//     */
//    void deleteSingleTypeEntities(long entityTypeId, long[] entityIds);
//
//    T newEntityByMetaEntityTypeId(long metaEntityTypeId);
//
//    T newEntityByEntityTypeId(long entityTypeId);
//
//    T newEntityByMetaEntityTypeCode(String metaEntityTypeCode);
//
//    T newEntityByEntityTypeCode(String entityTypeCode, String metaEntityTypeCode);
//
//    int removeList(List<T> models);
//
//    T findByIdAndMetaEntityTypeId(long metaEntityTypeId, long entityId);
//
//    T findByIdAndMetaEntityTypeCode(String metaEntityTypeCode, long entityId);
//
//    List<T> findByIdsAndMetaEntityTypeId(long metaEntityTypeId, long[] entityIds);
//	
}
